from flask import jsonify
from core.lib.request import RequestGetJsonWithRequired


def Response(msg, code=200):
    if isinstance(msg, dict):
        return jsonify(msg), code
    else:
        return jsonify({"msg": f"{msg}"}), code

def ResponseInvalidPost():
    return Response("无效表单参数，检查required与提交参数",400)

def ResponseInvalidInstance():
    return Response("无效instance",400)

def ResponseInvalidModel():
    return Response("无效Model",400)

def ResponseInvalidCallback():
    return Response("无效callback",400)


def ResponseGetOne(instance):
    if not instance:
        return ResponseInvalidInstance()
    #TODO 必须存在to_dict
    return Response(instance.to_dict())


def ResponsePostOne( required, _cb):
    """
    通用的 POST 处理函数，用于创建或更新数据库实例。

    :param Model: 数据库模型类，用于创建新实例
    :param required: 需要从请求中获取的必填字段列表
    :param success_msg: 操作成功时返回的消息
    :param _cb: 可选的回调函数，在实例创建后执行
    :return: Flask 响应对象，指示操作结果
    """
    json = RequestGetJsonWithRequired(required)
    if not json:
        return ResponseInvalidPost()

    if _cb:
        return _cb(json)
    return ResponseInvalidCallback()




